home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 7 / BBS in a Box - Macintosh - Volume VII (BBS in a Box) (January 1993).iso / Files / Prog / T / Think-Pascal-7.0.cpt / THINK Pascal Interfaces / SANE.p < prev    next >
Encoding:
Text File  |  1991-04-03  |  6.6 KB  |  257 lines  |  [TEXT/PJMM]

  1. {    This file has been processed by The THINK Pascal Source Converter, v1.1.    }
  2.  
  3. {
  4. Created: Friday, September 15, 1989 at 5:01 PM
  5.     SANE.p
  6.     Pascal Interface to the Macintosh Libraries
  7.  
  8.     Copyright Apple Computer, Inc.    1985-1989
  9.     All rights reserved
  10. }
  11.  
  12.  
  13. {$IFC UNDEFINED UsingIncludes}
  14. {$SETC UsingIncludes := 0}
  15. {$ENDC}
  16.  
  17.  
  18.     UNIT SANE;
  19.     INTERFACE
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30. { Elems881 mode set by -d Elems881=true on Pascal command line }
  31.  
  32. {$IFC UNDEFINED Elems881}
  33. {$SETC Elems881 = FALSE}
  34. {$ENDC}
  35.  
  36.  
  37. CONST
  38. {$IFC OPTION(MC68881)}
  39.  
  40. {*======================================================================*
  41.  *    The interface specific to the MC68881 SANE library    *
  42.  *======================================================================*}
  43.  
  44. Inexact = 8;
  45. DivByZero = 16;
  46. Underflow = 32;
  47. Overflow = 64;
  48. Invalid = 128;
  49. CurInex1 = 256;
  50. CurInex2 = 512;
  51. CurDivByZero = 1024;
  52. CurUnderflow = 2048;
  53. CurOverflow = 4096;
  54. CurOpError = 8192;
  55. CurSigNaN = 16384;
  56. CurBSonUnor = 32768;
  57.  
  58.  
  59. {$ELSEC}
  60.  
  61. {*======================================================================*
  62.  *    The interface specific to the software SANE library    *
  63.  *======================================================================*}
  64.  
  65. Invalid = 1;
  66. Underflow = 2;
  67. Overflow = 4;
  68. DivByZero = 8;
  69. Inexact = 16;
  70. IEEEDefaultEnv = 0;     {IEEE-default floating-point environment constant}
  71.  
  72.  
  73. {$ENDC}
  74.  
  75. {*======================================================================*
  76.  *    The common interface for the SANE library     *
  77.  *======================================================================*}
  78.  
  79. DecStrLen = 255;
  80. SigDigLen = 20;         {for 68K; use 28 in 6502 SANE}
  81.  
  82.  
  83. TYPE
  84.  
  85. RelOp = (GreaterThan,LessThan,EqualTo,Unordered);
  86.  
  87. NumClass = (SNaN,QNaN,Infinite,ZeroNum,NormalNum,DenormalNum);
  88.  
  89. RoundDir = (ToNearest,Upward,Downward,TowardZero);
  90.  
  91. RoundPre = (ExtPrecision,DblPrecision,RealPrecision);
  92.  
  93. DecimalKind = (FloatDecimal,FixedDecimal);
  94.  
  95. {$IFC OPTION(MC68881)}
  96.  
  97. {*======================================================================*
  98.  *    The interface specific to the MC68881 SANE library    *
  99.  *======================================================================*}
  100. Exception = LONGINT;
  101.  
  102. Environment = RECORD
  103.     FPCR: LONGINT;
  104.     FPSR: LONGINT;
  105.     END;
  106.  
  107. Extended80 = ARRAY [0..4] OF INTEGER;
  108.  
  109. TrapVector = RECORD
  110.     Unordered: LONGINT;
  111.     Inexact: LONGINT;
  112.     DivByZero: LONGINT;
  113.     Underflow: LONGINT;
  114.     OpError: LONGINT;
  115.     Overflow: LONGINT;
  116.     SigNaN: LONGINT;
  117.     END;
  118.  
  119. {$ELSEC}
  120.  
  121. {*======================================================================*
  122. *  The interface specific to the software SANE library      *
  123. *======================================================================*}
  124.  
  125. Exception = INTEGER;
  126.  
  127. Environment = INTEGER;
  128.  
  129. Extended96 = ARRAY [0..5] OF INTEGER;
  130.  
  131. MiscHaltInfo = RECORD
  132.     HaltExceptions: INTEGER;
  133.     PendingCCR: INTEGER;
  134.     PendingD0: LONGINT;
  135.     END;
  136.  
  137. {$ENDC}
  138.  
  139. {*======================================================================*
  140. *  The common interface for the SANE library    *
  141. *======================================================================*}
  142.  
  143. DecStr = STRING[DecStrLen];
  144.  
  145. DecForm = RECORD
  146.     style: DecimalKind;
  147.     digits: INTEGER;
  148.     END;
  149.  
  150. Decimal = RECORD
  151.     sgn: 0..1;
  152.     exp: INTEGER;
  153.     sig: STRING[SigDigLen];
  154.     END;
  155.  
  156. CStrPtr = ^CHAR;
  157.  
  158.  
  159.  
  160. {$IFC OPTION(MC68881)}
  161.  
  162. { return IEEE default environment }
  163. FUNCTION IEEEDefaultEnv: environment;
  164. PROCEDURE SetTrapVector(Traps: trapvector);
  165. PROCEDURE GetTrapVector(VAR Traps: trapvector);
  166. FUNCTION X96toX80(x: Extended): extended80;
  167. FUNCTION X80toX96(x: extended80): Extended;
  168. {$IFC Elems881 = false}
  169.  
  170. { sine }FUNCTION Sin(x: Extended): Extended;
  171. FUNCTION Cos(x: Extended): Extended;
  172. FUNCTION ArcTan(x: Extended): Extended;
  173. FUNCTION Exp(x: Extended): Extended;
  174. FUNCTION Ln(x: Extended): Extended;
  175. FUNCTION Log2(x: Extended): Extended;
  176. FUNCTION Ln1(x: Extended): Extended;
  177. FUNCTION Exp2(x: Extended): Extended;
  178. FUNCTION Exp1(x: Extended): Extended;
  179. FUNCTION Tan(x: Extended): Extended;
  180. {$ENDC}
  181.  
  182. {$ELSEC}
  183.  
  184. { return halt vector }FUNCTION GetHaltVector: LONGINT;
  185. PROCEDURE SetHaltVector(v: LONGINT);
  186. FUNCTION X96toX80(x: Extended96): Extended;
  187. FUNCTION X80toX96(x: Extended): Extended96;
  188. FUNCTION Log2(x: Extended): Extended;
  189. FUNCTION Ln1(x: Extended): Extended;
  190. FUNCTION Exp2(x: Extended): Extended;
  191. FUNCTION Exp1(x: Extended): Extended;
  192. FUNCTION Tan(x: Extended): Extended;
  193. {$ENDC}
  194.  
  195.  
  196. {*======================================================================*
  197. *  The common interface for the SANE library    *
  198. *======================================================================*}
  199.  
  200. {---------------------------------------------------
  201. * Conversions between numeric binary types.
  202. ---------------------------------------------------}
  203.  
  204. FUNCTION Num2Integer(x: Extended): INTEGER;
  205. FUNCTION Num2Longint(x: Extended): LONGINT;
  206. FUNCTION Num2Real(x: Extended): real;
  207. FUNCTION Num2Double(x: Extended): DOUBLE;
  208. FUNCTION Num2Extended(x: Extended): Extended;
  209. FUNCTION Num2Comp(x: Extended): Comp;
  210. PROCEDURE Num2Dec(f: decform;x: Extended;VAR d: decimal);
  211. FUNCTION Dec2Num(d: decimal): Extended;
  212. PROCEDURE Num2Str(f: decform;x: Extended;VAR s: DecStr);
  213. FUNCTION Str2Num(s: DecStr): Extended;
  214. PROCEDURE Str2Dec(s: DecStr;VAR Index: INTEGER;VAR d: decimal;VAR ValidPrefix: BOOLEAN);
  215. PROCEDURE CStr2Dec(s: CStrPtr;VAR Index: INTEGER;VAR d: decimal;VAR ValidPrefix: BOOLEAN);
  216. PROCEDURE Dec2Str(f: decform;d: decimal;VAR s: DecStr);
  217. FUNCTION Remainder(x: Extended;y: Extended;VAR quo: INTEGER): Extended;
  218. FUNCTION Rint(x: Extended): Extended;
  219. FUNCTION Scalb(n: INTEGER;x: Extended): Extended;
  220. FUNCTION Logb(x: Extended): Extended;
  221. FUNCTION CopySign(x: Extended;y: Extended): Extended;
  222. FUNCTION NextReal(x: real;y: real): real;
  223. FUNCTION NextDouble(x: DOUBLE;y: DOUBLE): DOUBLE;
  224. FUNCTION NextExtended(x: Extended;y: Extended): Extended;
  225. FUNCTION XpwrI(x: Extended;i: INTEGER): Extended;
  226. FUNCTION XpwrY(x: Extended;y: Extended): Extended;
  227. FUNCTION Compound(r: Extended;n: Extended): Extended;
  228. FUNCTION Annuity(r: Extended;n: Extended): Extended;
  229. FUNCTION RandomX(VAR x: Extended): Extended;
  230. FUNCTION ClassReal(x: real): NumClass;
  231. FUNCTION ClassDouble(x: DOUBLE): NumClass;
  232. FUNCTION ClassComp(x: Comp): NumClass;
  233. FUNCTION ClassExtended(x: Extended): NumClass;
  234. FUNCTION SignNum(x: Extended): INTEGER;
  235. FUNCTION NAN(i: INTEGER): Extended;
  236. PROCEDURE SetException(e: Exception;b: BOOLEAN);
  237. FUNCTION TestException(e: Exception): BOOLEAN;
  238. PROCEDURE SetHalt(e: Exception;b: BOOLEAN);
  239. FUNCTION TestHalt(e: Exception): BOOLEAN;
  240. PROCEDURE SetRound(r: RoundDir);
  241. FUNCTION GetRound: RoundDir;
  242. PROCEDURE SetPrecision(p: RoundPre);
  243. FUNCTION GetPrecision: RoundPre;
  244. PROCEDURE SetEnvironment(e: environment);
  245. PROCEDURE GetEnvironment(VAR e: environment);
  246. PROCEDURE ProcEntry(VAR e: environment);
  247. PROCEDURE ProcExit(e: environment);
  248. FUNCTION Relation(x: Extended;y: Extended): RelOp;
  249.  
  250.     { UsingSANE }
  251.  
  252.  
  253.     IMPLEMENTATION
  254. END.
  255.  
  256.  
  257.